package main.controller;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;

import main.utils.StrUtil;


//import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;



@Controller
@RequestMapping("/IO")
public class IOCtrl {

	@RequestMapping("/upload.do")
	public ArrayList<Boolean> upload(@RequestParam("myFile") MultipartFile[] files, HttpServletRequest request) {
		
		ArrayList<Boolean>upResults = new ArrayList<Boolean>();
		for (MultipartFile multipartFile : files) {
			upResults.add( handleUploadFile(multipartFile, request) );
		}
//		request.setAttribute("upResults", upResults);
//		return "/headImg";
		return upResults;
	}
	
	@ExceptionHandler
	public String handlerException(Exception ex){
		System.out.println("某个Controller中发生了异常...");
		return "error";//返回视图名。
	}

	public static Boolean handleUploadFile(MultipartFile file, HttpServletRequest request){
		Boolean isOK = false;
		if (!file.isEmpty() && file!=null) {
			// 获取WebRoot下upload文件上传路径的物理地址。
			String file_dir = request.getSession().getServletContext()
					.getRealPath("/upload");
			// 获取需要上传文件名
			String file_name = file.getOriginalFilename();
			String addName = StrUtil.getRandomFileName();
			// 拼接出上传文件的完整路径
			String file_dir_name = file_dir + File.separator  + addName +"_"+ file_name;
			File destFile = new File(file_dir_name);
			try {
				// 通过MultipartFile组件实现上传
				file.transferTo(destFile);
//				request.setAttribute("message", "文件上传成功");
				isOK = true;
			} catch (Exception e) {
				e.printStackTrace();
//				request.setAttribute("message", "文件上传失败");
			}
		}
		return isOK;		
	}
	
//	public static Boolean transferUploadFile(MultipartFile upFile, HttpServletRequest request){
//		Boolean isOK = false;
//        if(!upFile.isEmpty()){  
//            //如果用的是Tomcat服务器，则文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\WEB-INF\\upload\\文件夹中  
//            String realPath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload");  
//            //这里不必处理IO流关闭的问题，因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉，我是看它的源码才知道的  
////            FileUtils.copyInputStreamToFile(upFile.getInputStream(), new File(realPath, upFile.getOriginalFilename()));
//            try {
//				FileUtils.copyFileToDirectory((File) upFile, new File(realPath, upFile.getOriginalFilename()));
//				isOK = true;
//			} catch (IOException e) {
//				e.printStackTrace();
//			}            
//        } 
//        return isOK;
//	}
	
}
